package com.yss.system.service.impl;

import java.util.List;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yss.common.core.utils.StringUtils;
import com.yss.common.core.utils.uuid.IdUtils;
import com.yss.system.mapper.SysLogininforMapper;
import com.yss.system.service.ISysLogininforService;
import org.springframework.stereotype.Service;
import com.yss.system.api.domain.SysLogininfor;

/**
 * 系统访问日志情况信息 服务层处理
 */
@Service
public class SysLogininforServiceImpl extends ServiceImpl<SysLogininforMapper, SysLogininfor> implements ISysLogininforService {

    /**
     * 新增系统登录日志
     *
     * @param logininfor 访问日志对象
     */
    @Override
    public Boolean insertLogininfor(SysLogininfor logininfor) {
        logininfor.setId(IdUtils.fastSimpleUUID());
        return this.save(logininfor);
    }

    /**
     * 查询系统登录日志集合
     *
     * @param logininfor 访问日志对象
     * @return 登录记录集合
     */
    @Override
    public List<SysLogininfor> selectLogininforList(SysLogininfor logininfor) {
        QueryWrapper<SysLogininfor> wrapper = new QueryWrapper<>();
        wrapper.orderByDesc("ACCESS_TIME");
        if (null == logininfor) {
            this.list(wrapper);
        }
        if (StringUtils.isNotEmpty(logininfor.getIpaddr())) {
            wrapper.like("IPADDR", logininfor.getIpaddr());
        }
        if (null != logininfor.getStatus()) {
            wrapper.like("STATUS", logininfor.getStatus());
        }
        if (StringUtils.isNotEmpty(logininfor.getUserName())) {
            wrapper.like("USER_NAME", logininfor.getUserName());
        }
        if (StringUtils.isNotEmpty(logininfor.getParams())) {
            if (null != logininfor.getParams().get("beginTime") && StringUtils.isNotEmpty(logininfor.getParams().get("beginTime").toString())) {
                wrapper.ge("ACCESS_TIME", logininfor.getParams().get("beginTime"));
            }
            if (null != logininfor.getParams().get("endTime") && StringUtils.isNotEmpty(logininfor.getParams().get("endTime").toString())) {
                wrapper.le("ACCESS_TIME", logininfor.getParams().get("endTime"));
            }
        }
        return this.list(wrapper);
    }
}
